As technology advances, peer-to-peer communications (e.g., instant messaging) are becoming more popular and a variety of peer-to-peer applications are being developed. A unique feature of peer-to-peer communications is that data is shared among two or more users without the need for a centralized server. This has the ability to provide a data sharing environment in which each participating user has equal control over the data, and no one user or computer system has control over the others. While this type of an environment can be viewed as a positive for supporting social group interactions, it can cause some problems from a data management aspect.
For example, a particular peer-to-peer application may allow two or more users to share a music play list in such a way that each user sees the same play list, and hears the same music based on the shared play list. Furthermore, the play list may be modified by any of the users. Data management problems may arise when, for example, one user modifies the play list at approximately the same time that another user modifies the play list. A common result to such a scenario may be that the second user's modification is applied to the play list while the first user's modification is lost. However, by the nature of peer-to-peer connections, actions of one user should not cause actions of another user to be lost.
Similarly, ordered lists of data may be managed by a server in a client-server architecture. In existing client-server architectures, the server typically locks the ordered list when a client requests to make a change. Any other clients wanting to modify the ordered list must wait until the first change is completed, and the lock is removed. This is an undesirable situation due to the wait times that may be imposed, especially if several clients all have access to modify the same data.
Accordingly, a need exists for a technique for managing ordered lists of data that will support simultaneous data modifications from two or more users.